package com.skivingcloud.file.service;

import com.skivingcloud.admin.sys.entity.User;
import com.skivingcloud.common.utils.PageUtils;
import com.skivingcloud.file.entity.SysFile;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 附件 服务类
 * </p>
 *
 * @author skivingcloud
 * @since 2022-03-02
 */
public interface ISysFileService extends IService<SysFile> {

	/**
	 * 分页查询
	 * 
	 * @param params
	 * @return
	 */
	PageUtils queryPage(Map<String, Object> params);

	/**
	 * 保存文件
	 * 
	 * @param files      文件
	 * @param businessId 业务ID
	 * @param user       操作用户
	 * @return 文件ID集合
	 * @throws Exception
	 */
	List<String> saveFiles(List<MultipartFile> files, String businessId, User user) throws Exception;

	/**
	 * 根据id查询文件记录
	 * 
	 * @param id
	 * @return
	 */
	SysFile selectById(String id);

	/**
	 * 下载文件
	 * 
	 * @param fileManagement
	 * @param response
	 * @throws Exception
	 */
	void downloadFile(SysFile fileManagement, HttpServletResponse response) throws Exception;

	/**
	 * 返回文件字节
	 * 
	 * @param fileManagement
	 * @return
	 * @throws Exception
	 */
	byte[] getByte(SysFile fileManagement) throws Exception;

	/**
	 * 将文件移动至“已删除”目录
	 * 
	 * @param asList
	 * @param userid
	 * @param fileState
	 * @throws Exception
	 */
	void moveFilePath(List<String> asList, String userid, String fileState) throws Exception;

	/**
	 * 根据业务id查询附件信息
	 * 
	 * @param businessId
	 * @return
	 */
	List<SysFile> getFileListByBusId(String businessId);

	/**
	 * 根据业务id查询附件数量
	 * 
	 * @param busIds
	 * @return
	 */
	Map<String, Object> getFileCountByBusId(String[] busIds);
}
